var Campanha = require('../models/Campanha');
var mongoose = require('mongoose');
const bodyParser = require('body-parser');


 // Login required middleware

exports.ensureAuthenticated = function(req, res, next) {
  if (req.isAuthenticated()) {
    next();
  } else {
    res.redirect('/login');
  }
};

// Get Campanhas pela URL acredito.me/guilmour
exports.campanhaGet = function(req, res){
  Campanha.findOne({ 'urlname': req.params.urlname }, function(err, c){

    if (!c) {
      return res.redirect('/404');
    }
    else{
      res.render('campanha', {
        c: c,
        title: c.name
      });
    }
  });
};

// Get Doação do Exterior acredito.me/guilmour/exterior
exports.exteriorGet = function(req, res){
  Campanha.findOne({ 'urlname': req.params.urlname }, function(err, c){

    if (!c) {
      return res.redirect('/404');
    }
    else{
      res.render('exterior', {
        c: c,
        title: c.name,
        allowmenubar: false
      });
    }
  });
};

// GET Listar Minhas Campanhas
exports.minhascampanhasGet = function(req, res){
  Campanha.find({}, function(err, c){

    if (!c) {
      return res.redirect('/404');
    }
    else{
      res.render('minhascampanhas', {
        campanhas: c
      });
    }
  });
};



exports.newCampanhaGet = function(req, res) {
  if (!req.user) {
    return res.redirect('/login');
  }
  res.render('novacampanha', {
    title: 'Criar Nova Campanha'
  });
};

// POST Criar Campanha
exports.newCampanhaPost = function(req, res, next) {
  req.assert('name', 'O campo "Nome da Campanha" não pode ficar em branco').notEmpty();
  req.assert('urlname', 'O campo "URL da Campanha" não pode ficar em branco').notEmpty();
  req.sanitize('urlname').blacklist('\\.\\,\\{\\}\\!\\@\\#\\$\\%\\/\\\\\*\\:\\;');

  req.assert('weneed','O campo "Meta da Campanha" precisa ser um número em reais. Separe os centavos com virgula.').isCurrency({symbol: '$', require_symbol: false, allow_space_after_symbol: false, symbol_after_digits: false, allow_negatives: false, parens_for_negatives: false, negative_sign_before_digits: false, negative_sign_after_digits: false, allow_negative_sign_placeholder: false, thousands_separator: '.', decimal_separator: ',', allow_space_after_digits: false });

  req.assert('wehave','O campo "Já arrecadado " precisa ser um número em reais. Separe os centavos com virgula.').isCurrency({symbol: '$', require_symbol: false, allow_space_after_symbol: false, symbol_after_digits: false, allow_negatives: false, parens_for_negatives: false, negative_sign_before_digits: false, negative_sign_after_digits: false, allow_negative_sign_placeholder: false, thousands_separator: '.', decimal_separator: ',', allow_space_after_digits: false });

  req.assert('weneed','O Campo "Meta da Campanha" não pode ficar vazio.').notEmpty();


  req.assert('description','O Campo "Descrição" não pode ficar em branco.').notEmpty();
  req.assert('description','O Campo "Descrição" precisa ter no mínimo 300 caracteres e no máximo 4000.').isLength({min:300, max: 4000});

  var body = req.body;

  // para retornar depois do erro
  var form = {
    name: body.name,
    urlname: req.body.urlname,
    weneed: req.body.weneed,
    wehave: req.body.wehave,
    description: req.body.description,
    profile_pic: req.body.profile_pic,
    paypal_link: req.body.paypal_link,
    paypal_email: req.body.paypal_email,
    pagseguro: req.body.pagseguro,
    vakinha: req.body.vakinha,
    facebook_url: req.body.facebook_url,
    instagram_url: req.body.instagram_url,
    twitter_url: req.body.twitter_url,
    email_contato: req.body.email_contato,
    telefone_contato: req.body.telefone_contato,
    wpp_contato: req.body.wpp_contato,
    wpp2_contato: req.body.wpp2_contato,
    telegram_contato: req.body.telegram_contato,
    bancos: {
      banco1: {
        banco: req.body.bancos_banco_banco1,
        titular: req.body.bancos_banco_titular1,
        ag: req.body.bancos_banco_ag1,
        conta: req.body.bancos_banco_conta1,
        op: req.body.bancos_banco_op1,
      },
      banco2: {
        titular: req.body.bancos_banco_titular2,
        ag: req.body.bancos_banco_ag2,
        conta: req.body.bancos_banco_conta2,
        op: req.body.bancos_banco_op2,
      },
      banco3: {
        titular: req.body.bancos_banco_titular2,
        ag: req.body.bancos_banco_ag2,
        conta: req.body.bancos_banco_conta2,
        op: req.body.bancos_banco_op2,
      },
      banco4: {
        titular: req.body.bancos_banco4_titular2,
        ag: req.body.bancos_banco4_ag2,
        conta: req.body.bancos_banco4_conta2,
        op: req.body.bancos_banco4_op2,
      }
    }
  };

  var errors = req.validationErrors();

  if (errors) {
    req.flash('error', errors);
    return res.render('novacampanha', {form: form});
  }

  Campanha.findOne({ urlname: req.body.urlname }, function(err, campanha) {
    	if (campanha) {
      	req.flash('error', { msg: 'A URL da Campanha inserida já existe. Tente outra.' });
      	return res.redirect('/novacampanha');
    	}
      // Para salvar no BD
   	campanha = new Campanha({
      criador: req.user.id,
      name: req.body.name,
      urlname: req.body.urlname,
      weneed: req.body.weneed,
      wehave: req.body.wehave,
      description: req.body.description,
      facebook_url: req.bodyfacebook_url,
      profile_pic: req.body.profile_pic,
      paypal_link: req.body.paypal_link,
      paypal_email: req.body.paypal_email,
      pagseguro: req.body.pagseguro,
      vakinha: req.body.vakinha,
      facebook_url: req.body.facebook_url,
      instagram_url: req.body.instagram_url,
      twitter_url: req.body.twitter_url,
      email_contato: req.body.email_contato,
      telefone_contato: req.body.telefone_contato,
      wpp_contato: req.body.wpp_contato,
      wpp2_contato: req.body.wpp2_contato,
      telegram_contato: req.body.telegram_contato,
      bancos: {
        banco1: {
          banco: req.body.bancos_banco_banco1,
          titular: req.body.bancos_banco_titular1,
          ag: req.body.bancos_banco_ag1,
          conta: req.body.bancos_banco_conta1,
          op: req.body.bancos_banco_op1,
        },
        banco2: {
          banco: req.body.bancos_banco_banco2,
          titular: req.body.bancos_banco_titular2,
          ag: req.body.bancos_banco_ag2,
          conta: req.body.bancos_banco_conta2,
          op: req.body.bancos_banco_op2,
        },
        banco3: {
          banco: req.body.bancos_banco_banco3,
          titular: req.body.bancos_banco_titular3,
          ag: req.body.bancos_banco_ag3,
          conta: req.body.bancos_banco_conta3,
          op: req.body.bancos_banco_op3,
        },
        banco4: {
          banco: req.body.bancos_banco_banco4,
          titular: req.body.bancos_banco_titular4,
          ag: req.body.bancos_banco_ag4,
          conta: req.body.bancos_banco_conta4,
          op: req.body.bancos_banco_op4,
        }
      }
    });
    campanha.save(function(err) {
      //req.logIn(campanha, function(err) {
        res.redirect('/minhascampanhas');
      //});
    });
  });

};



/**
 * DELETE /campanha
 */
exports.campanhaDelete = function(req, res, next) {
  Campanha.remove({ _id: req.body.del }, function(err) {
    req.flash('info', { msg: 'A campanha foi excluída com sucesso.' });
    res.redirect('/minhascampanhas');
  });
};
